// 导入基础请求方法，用于发起不同类型的 HTTP 请求
import { axiosGet, axiosPost, axiosPut, axiosDelete } from '/@/api/RequestBase';
// 导入 SqlSugar 分页列表类型，用于处理分页数据
import { SqlSugarPagedList } from '/@/api/BaseDto';

// 导入库存入库相关的输入和输出类型
import { InvRuKuAddInput } from './dto/InvRuKuAddInput';
import { InvRuKuUpdateInput } from './dto/InvRuKuUpdateInput';
import { InvRuKuOutput } from './dto/InvRuKuOutput';
import { InvRuKuMingXiInput } from './dto/InvRuKuMingXiInput';
import { InvRuKuMingXiOutput } from './dto/InvRuKuMingXiOutput';
import { InvRuKuWithMingXiOutput } from './dto/InvRuKuWithMingXiOutput';
import { InvRuKuPageInput } from './dto/InvRuKuPageInput';

// 导出库存入库明细相关的输入和输出类型，方便其他模块使用
export type { InvRuKuMingXiInput, InvRuKuMingXiOutput };
// 导出库存入库相关的输入、输出和分页输入类型，方便其他模块使用
export type { InvRuKuOutput, InvRuKuAddInput, InvRuKuUpdateInput, InvRuKuPageInput };

// 定义服务接口的基础路径，注意要以斜杠结尾，且不要以斜杠开头
const service = 'InvRuKu/';

// 定义库存入库的 API 方法集合
export const InvRuKuApi = {
	/**
	 * 分页查询库存入库数据
	 * @param data - 库存入库分页查询的输入参数，可选
	 * @returns 返回一个 Promise，解析为 SqlSugar 分页列表，列表元素为库存入库输出对象
	 */
	page: (data?: InvRuKuPageInput) => {
		return axiosPost<SqlSugarPagedList<InvRuKuOutput>>(service + 'page', data);
	},
	/**
	 * 根据 ID 获取库存入库数据，包含明细信息
	 * @param id - 库存入库数据的 ID
	 * @returns 返回一个 Promise，解析为包含明细信息的库存入库输出对象
	 */
	get: (id: string) => {
		return axiosGet<InvRuKuWithMingXiOutput>(service + `get/${id}`);
	},
	/**
	 * 添加新的库存入库数据
	 * @param data - 库存入库添加的输入参数，可选
	 * @returns 返回一个 Promise，解析为新添加的库存入库输出对象
	 */
	add: (data?: InvRuKuAddInput) => {
		return axiosPost<InvRuKuOutput>(service + 'add', data);
	},
	/**
	 * 更新已有的库存入库数据
	 * @param data - 库存入库更新的输入参数，可选
	 * @returns 返回一个 Promise，解析为布尔值，表示更新是否成功
	 */
	update: (data?: InvRuKuUpdateInput) => {
		return axiosPut<boolean>(service + 'update', data);
	},
};
